﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ycdlib
{
	public class YCDParseException : Exception
	{
		#region フィールド

		/// <summary>
		/// エラーの発生した行番号
		/// </summary>
		private int line;
		/// <summary>
		/// エラー発生した列（文字数）
		/// </summary>
		private int column;

		#endregion


		#region プロパティ

		/// <summary>
		/// エラーが発生した行番号を取得できる
		/// </summary>
		public int Line { get { return line; } }
		/// <summary>
		/// エラーが発生した列（文字数）を取得できる
		/// </summary>
		public int Column { get { return column; } }

		#endregion


		/// <summary>
		/// コンストラクタ
		/// </summary>
		public YCDParseException () : this ( -1, -1, null )
		{
		}


		/// <summary>
		/// コンストラクタ
		/// </summary>
		/// <param name="line">例外の発生した行番号</param>
		/// <param name="col">例外の発生した列番号</param>
		/// <param name="message">メッセージ</param>
		public YCDParseException ( int line, int col, string message ) : base( message )
		{
			this.line = line;
			this.column = col;
		}


		public override string Message
		{
			get
			{
				return "line " + line + "(" + column + ") : " + base.Message;
			}
		}

		public override string ToString ()
		{
			return base.ToString();
		}
	}
}
